/* 
 * File:   ListaPalavras.h
 * 
 * Author: Camila Monteiro Caetano Tomaz
 *         Icaro de Paula
 *         Jonas de Castro
 * 
 * Description: Este cabeçalho contém a interface necessária para acesso aos 
 *   recursos de uma lista de palavras, contendo o nome da interface e não a
 *   maneira de execução.
 * 
 * Data: Junho de 2013
 * 
 */

#include <locale.h>
#include "cstdlib"
#include "iostream.h"
#include "funcionarios.h"
#include "string.h"

funcionarios::funcionarios(){

}

void funcionarios::cria(sFuncionarios *lista){
    lista->chapa = NULL;
    
}       

bool funcionarios::inserirFuncionario(sFuncionarios *listaDosFuncionarios, sFuncionarios tempFuncionario, 
        sFuncionarios *proximoLista){
    
    if (listaDosFuncionarios->chapa == NULL){
            
    strcpy(listaDosFuncionarios->nome, tempFuncionario.nome);
    listaDosFuncionarios->chapa = tempFuncionario.chapa;
    listaDosFuncionarios->salario = tempFuncionario.salario;
    listaDosFuncionarios->faltas = tempFuncionario.faltas;
    listaDosFuncionarios->atrasos = tempFuncionario.atrasos;
    listaDosFuncionarios->proximo = NULL;
    
    } else {
        sFuncionarios *novoFunc = new sFuncionarios;
    
        strcpy(novoFunc->nome, tempFuncionario.nome);
        novoFunc->chapa = tempFuncionario.chapa;
        novoFunc->salario = tempFuncionario.salario;
        novoFunc->faltas = tempFuncionario.faltas;
        novoFunc->atrasos = tempFuncionario.atrasos;

        novoFunc->proximo = NULL;
        
        sFuncionarios *anterior;
        
        proximoLista = listaDosFuncionarios;
        anterior = listaDosFuncionarios;
        
        while(proximoLista->proximo != NULL){
            anterior = proximoLista;
            proximoLista = proximoLista->proximo;
        }
        
        anterior->proximo = novoFunc;
        proximoLista = novoFunc;
    }  
    
    return true;
}

bool funcionarios::vazia(sFuncionarios *lista){
    if (lista == NULL){
        return true;
    } else {
        return false;
    }
}

// Função para imprimir a lista com os funcionarios.
void funcionarios::exibirLista(sFuncionarios* listaFunc){
    sFuncionarios *p;
    p = listaFunc;
    
    while (p->proximo != NULL){
        cout << "Informacoes:" << endl;
        cout << "Nome: " << p->nome << endl;
        cout << "Chapa: " << p->chapa << endl;
        cout << "Salario: " << p->salario << endl;
        cout << "Faltas: " << p->faltas << endl;
        cout << "Atrasos: " << p->atrasos << endl;   
        
        p = p->proximo;
    }
}
